package SomeClass;
//测试包装类
/*
作用：
    1.把基本数据类型转化为对象，方便涉及到对象的操作
    2. 包含每种基本数据类型的相关属性，如：最大值、最小值等
        以及相关的操作方法
    3.可以把 包装类对象、字符串、基本数据类型 来回转化
 */
public class TestWraperClass {
    void testInteger(){
        /*
        测试Integer的用法
         */
        //基本数据类型转化为Integer对象/
        //从Java9被废弃，但是可以用
        Integer int1 = new Integer(10);
        //官方推荐、写法
        Integer int2 = Integer.valueOf(20);
        //Integer对象转化为int
        int a = int1.intValue();
        //字符串转化为Integer对象
        Integer int3 = Integer.parseInt("334");
        Integer int4 = new Integer("999");
        //Integer对象转化为字符串
        String str1 = int3.toString();
        //常见的int类型想关的常量
        System.out.println("int能表示的最大整数："+Integer.MAX_VALUE);

    }
    public static void main(String[] args) {
        TestWraperClass tw = new TestWraperClass();
        tw.testInteger();

        //基本数据类型转化为对象
        Integer i1 = new Integer(300);
        Integer i2 = Integer.valueOf(20);


        //包装类对象转化为基本数据类型
        double d = i2.doubleValue();

        //将字符串转化为包装类对想
        Integer i3 = Integer.valueOf("888");
        Integer i4 = Integer.parseInt("1876298");

        //将包装类对象转化为字符串
        String s1 = i3.toString();

        //自动装箱
        //编译器自动帮你加成：Integer a = Integer.valueOf(300);
        Integer a = 300;

        //自动拆箱
        //编译器自动帮你加成：a.intValue()
        int b = a;
        Integer c = null;
        //编译器自动帮你加成：c.intValue()
        //java.lang.NullPointerExceotion:对象为null，我们调用了他的属性或方法
//        int c2 = c ;

        //包装类的缓存问题
        Integer d1 = 4000;
        Integer d2 = 4000;
        Integer d3 = 123;
        Integer d4 = 123;       //Integer.valueOf()

        //两个不同的对象
        System.out.println(d1 == d2); //false
        //当数字在[-128,127]之间的时候,返回缓存数组中的某个元素
        System.out.println(d3 == d4); //true
        System.out.println(d1.equals(d2));//true








    }
}
